package ar.com.ctrln.control.calendar;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import ar.com.ctrln.persistence.model.evento.EventoCalendario;
import ar.com.ctrln.persistence.model.evento.Participante;
import ar.com.ctrln.persistence.model.evento.TipoEvento;
import ar.com.ctrln.persistence.model.sistema.cuentas.Autorizacion;
import ar.com.ctrln.services.evento.GestorEvento;
import ar.com.ctrln.services.evento.GestorTipoEvento;
import ar.com.ctrln.services.participante.GestorParticipante;
import ar.com.ctrln.services.sistema.autorizacion.GestorAutorizacion;

@Controller("consultarEventos")
public class ConsultarEventos {

	@Autowired
	private GestorEvento gestorEvento;

	@Autowired
	private GestorTipoEvento gestorTipoEvento;

	@Autowired
	private GestorAutorizacion gestorAutorizacion;

	@Autowired
	private GestorParticipante gestorParticipante;
	
	private EventoCalendario evento;

	public List<EventoCalendario> listar() {
		return gestorEvento.listarEvento();
	}

	public List<EventoCalendario> listarAutorizados(long idAutorizacion) {
		return gestorEvento.listarEventoAutorizacion(idAutorizacion);
	}

	public EventoCalendario getEvento(long id) {
		return gestorEvento.buscarEvento(id);
	}

	public Collection<? extends TipoEvento> listarTiposEventos() {
		return gestorTipoEvento.listarTipos();
	}

	public Autorizacion buscarAutorizacion(String autorizacion) {
		return gestorAutorizacion.getAutorizacion(autorizacion);
	}

	public void actualizarEvento(EventoCalendario evento) {
		gestorEvento.actualizar(evento);
	}

	public void eliminarParticipantes(Set<Participante> oldParticipantes) {
		for (Participante participante : oldParticipantes) {
			gestorParticipante.eliminar(participante);
		}
	}

	public void nuevoParticipante(Collection<Participante> participantes) {
		for (Participante participante : participantes) {
			gestorParticipante.guardar(participante);
		}
	}
	
	public Set<Participante> getListaParticipantes(long idEvento){
		return gestorParticipante.listar(idEvento);
	}

	public EventoCalendario getEvento() {
		return evento;
	}
	
	public void setEvento(EventoCalendario evento){
		this.evento = evento;
	}
}
